package com.petecat.interchan.base.warning.config.service;

import java.util.List;

import com.petecat.interchan.base.project.entity.EsEwarningHardwareConfig;
import com.petecat.interchan.base.warning.config.entity.BsWarningConfig;
import com.petecat.interchan.base.warning.config.entity.EsEwarningHardWare;
import com.petecat.interchan.base.warning.config.entity.EsWarningNoticeVO;
import com.petecat.interchan.base.warning.config.entity.WarningEmpl;
import com.petecat.interchan.base.warning.rule.entity.BsWarningRule;
import com.petecat.interchan.core.service.BaseService;
import com.petecat.interchan.protocol.base.config.dto.BsWarningConfigAddDTO;
import com.petecat.interchan.protocol.base.config.dto.BsWarningConfigQryDTO;
import com.petecat.interchan.protocol.base.config.dto.BsWarningConfigUpdDTO;
import com.petecat.interchan.protocol.base.config.vo.BsWarningConfigQryVO;
import com.petecat.interchan.protocol.base.config.vo.BsWarningConfigTreeVO;
import com.petecat.interchan.protocol.base.config.vo.BsWarningConfigUpdVO;
import com.petecat.interchan.protocol.data.PageVO;
import com.petecat.interchan.protocol.sso.companyempl.vo.BsSmsQryVO;

public interface IWarningConfigService extends BaseService<BsWarningConfig, String>{
	
	/**
	 * 分页查询预警配置信息
	 * @param bsWarningConfigQryDTO
	 * @return
	 */
	PageVO<BsWarningConfigQryVO> queryWarningConfigByPage(BsWarningConfigQryDTO bsWarningConfigQryDTO);
	
	/**
	 * 新增预警配置基本信息
	 * @param bsWarningConfigAddDTO
	 * @param userId
	 */
	void saveWarningConfig(BsWarningConfigAddDTO bsWarningConfigAddDTO, String userId);
	
	/**
	 * 查询预警配置Tree
	 * @param bsWarningConfigQryDTO
	 * @return
	 */
	PageVO<BsWarningConfigTreeVO> queryWarningConfigTree(BsWarningConfigQryDTO bsWarningConfigQryDTO);
	
	/**
	 * 查询预警配置模块
	 * @param configId
	 * @param userId 
	 * @return
	 */
	BsWarningConfigUpdVO queryWarningConfig(String configId, String userId);
	
	/**
	 * 修改预警配置信息
	 * @param bsWarningConfigUpdDTO
	 * @param userId
	 */
	void updateWarningConfig(BsWarningConfigUpdDTO bsWarningConfigUpdDTO, String userId);

	/**
	 * 通过预警配置Id删除预警配置信息
	 * @param configId
	 */
	void removeWarningConfigByConfigId(String configId);
	
	/**
	 * 通过预警配置Id修改预警配置状态信息
	 * @param configId
	 * @param projectId 
	 */
	void updateStatusConfigById(String configId, String projectId);
	

	/**
	 * 通过规则ID查询到配置信息后，通过配置ID查询配置信息
	 * @param ruleId
	 * @return
	 */
	BsWarningConfig getEwarningConfigIdByRuleId(String ruleId);
	
	/**
	 * 查询ES预警消息通知
	 * @param userId
	 * @return
	 */
	List<EsWarningNoticeVO> queryEsWarningNotice(String userId);
	
	/**
	 * 通过规则ID查询对应的预警信息
	 * @param ruleId
	 * @param userId
	 * @return
	 */
	List<EsEwarningHardWare> getWarningByRuleId(String ruleId, String userId);
	
	/**
	 * 根据ID修改指定的 是否已读状态
	 * @param ids
	 * @param userId
	 */
	void updateEsWarningReadStatusById(List<String> ids,String ruleId, String userId);
	
	/**
	 * 通过EsID查询对应的预警人员
	 * @Title: getWarningEmplByEsId   
	 * @Description: TODO(这里用一句话描述这个方法的作用)   
	 * @param: @param esId
	 * @param: @param userId
	 * @param: @return      
	 * @return: PageVO<WarningEmpl>      
	 * @throws
	 */
	PageVO<WarningEmpl> getWarningEmplByEsId(String esId, String userId);
	
	/**
	 * 通过EsID查询对应的规则信息
	 * @Title: getWarningRuleInfoByEsId   
	 * @Description: TODO(这里用一句话描述这个方法的作用)   
	 * @param: @param esId
	 * @param: @param userId
	 * @param: @return      
	 * @return: EsEwarningHardwareConfig      
	 * @throws
	 */
	EsEwarningHardwareConfig getWarningRuleInfoByEsId(String esId, String userId);
	
	
	
	
}
